package com.ingenio.siot.adapter;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.ingenio.siot.Adapter;
import com.ingenio.siot.entity.Parametro;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

public class ParametroAdapter extends Adapter{
	
	public List<Parametro> devolverTodos() throws Exception{
    	Connection conn = null;
    	List<Parametro> parametros = new ArrayList<Parametro>();
    	PreparedStatement stmt = null;
		try {
			conn = (Connection) abrirConexion();
			String sel ="SELECT * from parametros";
    		stmt = (PreparedStatement) conn.prepareStatement(sel);
    		ResultSet result = stmt.executeQuery();
    		Parametro p = null;
    		
    		while(result.next()){
    			String par = result.getString("parametro");
    			String val = result.getString("valor");
    			boolean habFor = result.getBoolean("habilitadoFormula");
    			p = new Parametro(par, val, habFor); 
    			parametros.add(p);
    		}
		}
		catch (Exception e) {
			e.printStackTrace();
			throw new Exception("Error al conectar con la base de datos.", e);
		}
    	finally{
    		cerrarConexion(conn);
    	}
    	return parametros;
    }
	
	public Parametro devolverParametro(String parametro) throws Exception{
		Connection conn = null;
		Parametro p = null;
		PreparedStatement stmt = null;
		try{
			conn = (Connection) abrirConexion();
			String query = "SELECT * FROM parametros WHERE parametro=?";
			stmt = (PreparedStatement) conn.prepareStatement(query);
			stmt.setString(1, parametro);
			ResultSet result = stmt.executeQuery();
			if(result.next()){
				String par = result.getString("parametro");
				String val = result.getString("valor");
				boolean habFor = result.getBoolean("habilitadoFormula");
				p = new Parametro(par, val, habFor); 
			}
		}
		catch (Exception e){
			e.printStackTrace();
			throw new Exception("Error al conectar con la base de datos", e);
		}
		finally{
			cerrarConexion(conn);
		}
		return p;
	}
	
	public void editarValorParametro(Parametro par) throws Exception{
		Connection conn = null;
		PreparedStatement stmt = null;
		try {
    		conn = (Connection) abrirConexion();
    		String query =	"UPDATE parametros " +
    						"SET valor=? " +
    						"WHERE parametro=?";
    		stmt = (PreparedStatement) conn.prepareStatement(query);
    		stmt.setString(1,par.getValor());
    		stmt.setString(2,par.getParametro());
    		stmt.execute();
    	}
    	catch (Exception e) {
			e.printStackTrace();
			throw new Exception("Error al conectar con la base de datos.", e);
		}
    	finally{
    		cerrarConexion(conn);
    	}
	}
}
